******************************************** * LISTING2 (ATMAS-FORMAT) * VERTIKALES FINE-SCROLLING * PETER FINZEL 1985 ******************************************** YMIN EQU $A800 SCROLLBEREICH-ANFANG YMAX EQU $A800+$1E0 SCROLLBEREICH-ENDE (24 ZEILEN) VSMAX EQU 15 MAX. FINESCROLL WERT ZLAENG EQU 20 BYTES PRO ZEILE MOD EQU 7+$20 ANTIC-MOSUS 7 + VSCROL BIT SDLSTL EQU $0230 DISPLAY LIST ADRESSE STICK0 EQU $0278 JOYSTICK ABFRAGE SETVBV EQU $E45C INTERRUPT SETZEN VEKTOR XITVBV EQU $E462 ABSCHLUSS VBI VSCROL EQU $D405 VERTIKALES SCROLL REGISTER RANDOM EQU $D20A ZUFALLSZAHL ORG $0600 PROGRAMM STEHT IN PAGE 6 ******************************************** * HAUPTSCHLEIFE BESTEHT AUS INITIALISIERUNG * UND LEERSCHLEIFE, DA ALLES IM VBI STATTFINDET ******************************************** JSR FILL SCROLLSPEICHER MIT ZUFALLSMUSTER FUELLEN JSR VSINIT DISPLAYLIST UND VBI EINRICHTEN LOOP JMP LOOP DAUERSCHLEIFE (FINET ALLES IM VBI STATT) ******************************************** * DISPLALIST FUER GR.2 SCREEN * UND EINE VARIABLE ******************************************** DLIST DFB $70,$70,$70 DISPLAYLIST: 3X8 LEERZEILEN DFB MOD+$40 MODEZEILE MIT V-SCROLL UND LMS LMSADR DFW YMIN STARTE BILDSPEICHER = START SCROLLSPEICHER DFB MOD,MOD,MOD 11 ZEILEN GR.2 MIT VSCROLL-BIT DFB MOD,MOD,MOD,MOD DFB MOD,MOD,MOD,MOD DFB MOD-$20 LETZTE GR.2 ZEILE BRAUCHT KEIN VSCROLL DFB $41 SPRUNG ZUM ANFANG DER DISPLAYLIST DFW DLIST SVSCR DFB 0 SHADOW-VARIABLE FR VSCROL ********************************************* * INTITIALISIERUNG DER EIGENEN DISPLAYLIST * UND DER VBI-ROUTINE ********************************************* VSINIT LDA #YMIN:L LMS ADRESSE AUF ANFANG DES SCROLLBEREICHS STA LMSADR SCHREIBEN. ERST LSB LDA #YMIN:H DANN MSB STA LMSADR+1 LDA #DLIST:L NEUE DISPLAY-LIST NUTZEN STA SDLSTL ERST LSB LDA #DLIST:H DANN MSB STA SDLSTL+1 LDA #0 VSCROL UND SEIN SCHATTENREGISTER AUF NULL STA VSCROL STA SVSCR LDY #VSVBI:L UNSEREN EIGENEN VBI AKTIVIEREN LDX #VSVBI:H LDA #7 JSR SETVBV RTS UND ZURCK IN DIE HAUPTSCHLEIFE ********************************************* * EIGEN VBI ROUTINE FUER VERTIKALES SCROLLING * MIT JOYSTICK-STEUERUNG (HOCH-RUNTER) ********************************************* VSVBI LDA STICK0 JOYSTICK ABFRAGEN AND #1 NACH OBEN? BNE TSTUNT NEIN -> DANN NACH UNTEN ABFRAGEN JSR OBEN BILDSCHIRM NACH OBEN SCROLLEN JMP VBIEND VBI KANN VERLASSEN WERDEN TSTUNT LDA STICK0 JOYSTICK ABFRAGEN AND #2 NACH UNTEN? BNE VBIEND AUCH NICHT -> VBI VERLASSEN JSR UNTEN BILDSCHIRM NACH UNTEN SCROLLEN VBIEND LDA SVSCR SCHATENREGISTER SCROLLING STA VSCROL IN HARDWAREREGISTER SCHREIBEN JMP XITVBV EIGENE VBI ROUTINE VERLASSEN ******************************************** * UP: BILDSCHIRM NACH OBEN SCROLLEN ******************************************** OBEN LDA SVSCR SOFTSCROLL AM ANSCHLAG? BNE OB1 NEIN -> KEIN PRUEFUNG NOETIG LDA LMSADR ENDE DES SCROLLBEREICHS ERREICHT? CMP #YMAX:L LSB PRUEFEN BNE OB1 NEIN-> DANN SCROLLEN LDA LMSADR+1 MSB PRUEFEN CMP #YMAX:H BEQ OBEND ENDE ERREICHT -> KEIN SCROLLING OB1 INC SVSCR FEINSCROLL POSITION ERHOEHEN LDA SVSCR CMP #VSMAX+1 IST AUCH GROB-SCROLL NOTWENDIG? BCC OBEND NEIN? -> SCROLLEN BEENDET LDA #0 FINESCROLL WIEDER AUF NULL STA SVSCR CLC ADDITION VORBEREITEN LDA LMSADR LMS ADRESSE UM ADC #ZLAENG EINE ZEILE ERHOEHEN STA LMSADR ERST LSB BCC OBEND FALLS NOTWENDIG INC LMSADR+1 AUCH MSB OBEND RTS UP-SCROLL BEENDET ******************************************** * DOWN: BILDSCHIRM NACH UNTEN SCROLLEN ******************************************** UNTEN LDA SVSCR SOFTSCROLL AM ANSCHLAG? BNE UN1 NEIN -> KEIN PRUEFUNG NOETIG LDA LMSADR ENDE DES SCROLLBEREICHS ERREICHT? CMP #YMIN:L LSB PRUEFEN BNE UN1 NEIN-> DANN SCROLLEN LDA LMSADR+1 MSB PRUEFEN CMP #YMIN:H BEQ UNEND ENDE ERREICHT -> KEIN SCROLLING UN1 DEC SVSCR FEINSCROLL POSITION VERMINDERN BPL UNEND SOLANGE NICHT 0 -> SCROLL BEENDET LDA #VSMAX FALLS DOCH FINE-SCROLLWERT STA SVSCR WIEDER AUF MAXIMUM SEC SUBSTRAKTION VORBEREITEN LDA LMSADR LMS ADRESSE UM SBC #ZLAENG EINE ZEILE VERMINDERN STA LMSADR ERST LSB BCS UNEND FALLS NOTWENDIG DEC LMSADR+1 AUCH MSB UNEND RTS UP-SCROLL BEENDET ******************************************** * DEN SCROLL-SPEICHER MIT ZUFALLSMUSTER * DAMIT MAN AUCH WAS SIEHT ******************************************** FILL LDX #3 3 SEITEN FLLEN LDY #0 LDA #YMIN:L SCROLLSEITEN-ANFANGSADRESSE STA $80 IN ZEROPAGE ADRESSE SPEICHERN LDA #YMIN:H STA $81 RND1 LDA RANDOM ZUFALLSZAHL LADEN STA ($80),Y INDIREKT INDIZIERT IN SCROLLSPEICHER INY INDIZIERUNGSWERT ERHHEN BNE RND1 UND WEITER BIS WIEDER BEI NULL INC $81 MSB AUCH UM 1 ERHHEN DEX BNE RND1 BIS 3 SEITEN GESCHRIEBEN SIND RTS DANN ZURCK